// api/terminal.js
const BASE_URL = 'http://121.37.1.66/8081'; // 你的基础 URL

// 封装 API 函数
export const api = {
  // ------------------- 终端 ----------------------
  // ---------定时任务---------
  // 创建定时任务接口
  async scheduledTasks_api(taskName, cronExpression, description) {
    if (!taskName || cronExpression || !description) {
      throw new Error('参数不完整');
    }
    
    try {
      const res = await new Promise((resolve, reject) => {
        uni.request({
          url: `${BASE_URL}/api/scheduledTasks/`,
          method: 'POST',
          header: {
            Authorization: token,  // 添加Authorization头部
          },
          data: {taskName, cronExpression, description}, 
          timeout: 10000,  // 设置超时时间 10秒
          success: resolve,
          fail: reject,
        });
      });
  
      if (res.statusCode === 200 && res.data.success) {
        return res.data;
      } else {
        throw new Error(res.data.message || '创建定时任务失败');
      }
    } catch (err) {
      console.error('创建定时任务失败:', err);
      throw err; // 抛出错误，供外部捕获
    }
  },
  
  // 查询定时任务接口
  async scheduledTasks_query_api(taskName) {
    if (!taskName) {
      throw new Error('定时任务不能为空');
    }
    
    try {
      const res = await new Promise((resolve, reject) => {
        uni.request({
          url: `${BASE_URL}/api/scheduledTasks/selectByTaskName`,
          method: 'GET',
          header: {
            Authorization: token,  // 添加Authorization头部
          },
          data: {}, // GET 请求一般通过 URL 查询参数传递数据，data 可以为空
          params: {
            taskName: taskName
          },
          timeout: 10000,  // 设置超时时间 10秒
          success: resolve,
          fail: reject,
        });
      });
  
      if (res.statusCode === 200 && res.data.success) {
        return res.data;
      } else {
        throw new Error(res.data.message || '查询定时任务失败');
      }
    } catch (err) {
      console.error('查询定时任务失败:', err);
      throw err; // 抛出错误，供外部捕获
    }
  },
  
  // 更新定时任务接口
  async scheduledTasks_update_api(taskName, cronExpression, description) {
    if (!taskName || !cronExpression || !description) {
      throw new Error('参数不完整');
    }
    
    try {
      const res = await new Promise((resolve, reject) => {
        uni.request({
          url: `${BASE_URL}/api/scheduledTasks/selectByTaskName`,
          method: 'PUT',
          header: {
            Authorization: token,  // 添加Authorization头部
          },
          data: {taskName, cronExpression, description},
          timeout: 10000,  // 设置超时时间 10秒
          success: resolve,
          fail: reject,
        });
      });
  
      if (res.statusCode === 200 && res.data.success) {
        return res.data;
      } else {
        throw new Error(res.data.message || '更新定时任务失败');
      }
    } catch (err) {
      console.error('更新定时任务失败:', err);
      throw err; // 抛出错误，供外部捕获
    }
  },
  
  // 删除定时任务接口
  async scheduledTasks_delete_api(taskId) {
    if (!taskId) {
      throw new Error('定时任务id不能为空');
    }
    
    try {
      const res = await new Promise((resolve, reject) => {
        uni.request({
          url: `${BASE_URL}/api/scheduledTasks/${taskId}`,
          method: 'DELETE',
          header: {
            Authorization: token,  // 添加Authorization头部
          },
          data: {},
          timeout: 10000,  // 设置超时时间 10秒
          success: resolve,
          fail: reject,
        });
      });
  
      if (res.statusCode === 200 && res.data.success) {
        return res.data;
      } else {
        throw new Error(res.data.message || '删除定时任务失败');
      }
    } catch (err) {
      console.error('删除定时任务失败:', err);
      throw err; // 抛出错误，供外部捕获
    }
  },
  
  // 事件查询接口
  async scheduledTasks_page_api(currentPage, size) {
    if (!currentPage || !size) {
      throw new Error('参数不完整');
    }
    
    try {
      const res = await new Promise((resolve, reject) => {
        uni.request({
          url: `${BASE_URL}/api/scheduledTasks/`,
          method: 'GET',
          header: {
            Authorization: token,  // 添加Authorization头部
          },
          data: {}, // GET 请求一般通过 URL 查询参数传递数据，data 可以为空
          params: {
            currentPage: currentPage,
            size: size
          },
          timeout: 10000,  // 设置超时时间 10秒
          success: resolve,
          fail: reject,
        });
      });
  
      if (res.statusCode === 200 && res.data.success) {
        return res.data;
      } else {
        throw new Error(res.data.message || '事件查询失败');
      }
    } catch (err) {
      console.error('事件查询失败:', err);
      throw err; // 抛出错误，供外部捕获
    }
  },
}